package net.bitacademy.java22.service;

import net.bitacademy.java22.domain.AccessTokenDAO;
import net.bitacademy.java22.domain.AccessTokenVO;
import net.bitacademy.java22.domain.ProfileDAO;
import net.bitacademy.java22.domain.ProfileVO;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.widget.Toast;

public class ProfileHandler {
	Context context;
	ProfileVO pvo;
	ProfileDAO pdao;
	org.jfedor.nxtremotecontrol.NXT robot;
	
	//생성자 함수
	public ProfileHandler(Context context) {
		this.context = context;
	}
	
	//작성자: 이현우
	//내용:	자바스크립트 index.js에서 호출된다.
	//		index.js에서 넘겨받은 자료를 vo를 하나 생성하여 담아서
	//		dao를 호출하여서 db에 저장한다.
	//최종수정날짜:	2012-02-24
	public void insert(String hwflag, String swflag, String tag, String sound, String vibration, String wifi, String bluetooth, String todo) {
		pvo = new ProfileVO();
		pdao = new ProfileDAO(context);
		
		// index.js에서 넘겨주는 정보를 pvo에 넣는과정
		pvo.setHwflag(hwflag);
		pvo.setSwflag(swflag);
		pvo.setTag(tag);
		pvo.setSound(Integer.parseInt(sound));
		pvo.setVibration(vibration);
		pvo.setWifi(wifi);
		pvo.setBluetooth(bluetooth);
		pvo.setFunction1(todo);
		
	
		//넣은 pvo를 pdao를 이용해서 db에 넣는다.
		pdao.insert2(pvo);
	}
	
	public void update(String hwflag, String swflag, String tag, String sound, String vibration, String wifi, String bluetooth, String todo) {
		pvo = new ProfileVO();
		pdao = new ProfileDAO(context);
		
		// index.js에서 넘겨주는 정보를 pvo에 넣는과정
		pvo.setHwflag(hwflag);
		pvo.setSwflag(swflag);
		pvo.setTag(tag);
		pvo.setSound(Integer.parseInt(sound));
		pvo.setVibration(vibration);
		pvo.setWifi(wifi);
		pvo.setBluetooth(bluetooth);
		pvo.setFunction1(todo);
		
		//넣은 pvo를 pdao를 이용해서 db에 넣는다.
		pdao.update(pvo);
		pdao.update2(pvo);
		
	}
	
	public String detail(String tag) {
		pdao = new ProfileDAO(context);
		pvo = pdao.detail(tag);
		String result = pvo.getHwflag()+":"+pvo.getSwflag()+":"+pvo.getTag()+":"+pvo.getSound()+":"+pvo.getVibration()+":"+pvo.getWifi()+":"+pvo.getBluetooth()+":"+pvo.getFunction1();
		return result;
	}

	//작성자: 정승현
	//내용:	taglist를 가져온다.
	//최종수정날짜:	2012-03-05
		public String select() {
			pdao = new ProfileDAO(context);
			String tagList = pdao.select();
			return tagList;
		}	
	
	//작성자 : 정민영
	//내용:	구현
	//최종수정날짜:	2012-03-05
	public void del(String tag) {
		pvo = new ProfileVO();
		pvo.setTag(tag);
		pdao = new ProfileDAO(context);
		pdao.del(pvo);
	}
	
	
	//작성자: 김정진, 박상희
	//내용:	DB의 tag값을 가져와서 비교한다. 중복이면 1을 넘겨준다. 
	//			처음 실행했을 때의 null처리 더함
	//최종수정날짜:	2012-03-05
	public int validation(String tag){
		pdao = new ProfileDAO(context);
		String db = pdao.select();
		//DB에 아무것도 없을 때 null처리
		if(db==null){
			return 0;
		}	
		String[] dblist = db.split(":");
		int len = dblist.length; 
		for(int i=0; i<len; i++){
			if(dblist[i].equals(tag)){
				return 1;
			}
		}
		return 0;
	}
		
	public void tagjoin() {
		pdao = new ProfileDAO(context);
		Toast.makeText(context, pdao.tagjoin(), Toast.LENGTH_LONG).show();
	}
	
	//작성자:정승현
	//내용: Token 값 DB여부 
	//최종수정날짜 : 2012-03-08
	public boolean tokenValidation(){
		AccessTokenVO atvo = AccessTokenVO.getInstance();;
		AccessTokenDAO atdao = new AccessTokenDAO(context);
		boolean token = false;
		
		token = atdao.select(); 
		
		long time = (System.currentTimeMillis()-atvo.getCurrentTime())/(1000*60);

		//토큰이 있고 토큰 시간과 현재 시간이 60분 미만이면 유효(true) 
		if(token && (time <60)){
			return true;
		}else{
			return false;
		}
	}
	
	//작성자: 이현우
	//내용:	
	//최종수정날짜:	2012-02-23
	public void showToast(String message) {
		Toast.makeText(context, message, Toast.LENGTH_LONG).show();
	}

	//작성자: 이현우
	//내용:	트리거를 멈추게 하는 메소드
	//최종수정날짜:	2012-03-09
	public void triggerStop() {
		Trigger trigger = Trigger.getInstance();
		if(PascalEngine.statusFlag==1) {
			HwHandler hw = new HwHandler(context);
			pvo = pdao.getCurrentHW();
			hw.goHardwareSetting(pvo);
			PascalEngine.statusFlag=0;
			pdao.deleteNormal(pvo);
		}
		trigger.onDestroy();
	//	trigger.run= false;
	}
	
//	//작성자: 이현우
//	//내용:	트리거가 시작할 때 DB에 id값을 확인해서 있는경우 핸드폰 상태를 원래대로 돌려놓는다.
//	//최종수정날짜:	2012-03-09
//	public void rollback() {
//		ProfileDAO pdao = new ProfileDAO(context);
//		String id=pdao.exist();
//		if(id!=null) {
//			HwHandler hh = new HwHandler(context);
//			hh.restore(id);
//		}
//	}
}